perm filename PROTFF.SAI[AER,HPM] blob
sn#157906 filedate 1975-05-07 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "PROFFT"
C00005 ENDMK
C⊗;
BEGIN "PROFFT"
REQUIRE "PIXNIC.SAI[VIS,HPM]" SOURCE_FILE;
REQUIRE "FFTNIC.SAI[NUM,HPM]" SOURCE_FILE;
INTEGER I,J,K,PSIZ,PXMAX;
INTEGER HI,WI,MH,MW;
STRING INFL,OUFL;
OUTSTR("INPUT FILE:"); INFL←INCHWL;
OUTSTR("OUTPUT FILE:"); OUFL←INCHWL;
BEGIN
INTEGER ARRAY PIC[0:PFLDIM(INFL)];
GETPFL(INFL,PIC[0]);
PSIZ←PIC[PCBY];
HI←PIC[PCLN]; WI←PIC[LNBY]; PXMAX←2↑PIC[BYBI]-1;
MH←0; WHILE 2↑(MH+1)≤HI DO MH←MH+1;
MW←0; WHILE 2↑(MW+1)≤WI DO MW←MW+1;
WI←2↑MW; HI←2↑MH;
END;
BEGIN
REAL ARRAY A[0:PSIZ];
BEGIN
INTEGER ARRAY PIC[0:PFLDIM(INFL)];
GETPFL(INFL,PIC[0]);
FOR I←0 STEP 1 UNTIL HI-1 DO
FOR J←0 STEP 1 UNTIL WI-1 DO
A[I*WI+J]←PIXEL(PIC[0],I,J);
END;
BEGIN
REAL ARRAY B[0:PSIZ];
REAL N,Q;
N←2↑(MW+MH); Q←1/SQRT(N);
FOR I←0 STEP 1 UNTIL HI-1 DO
FOR J←0 STEP 1 UNTIL WI-1 DO
B[I*WI+J]←0;
REORDER(A,B,HI*WI,MW,WI,FALSE); REVFFT2(A,B,HI*WI,MW,WI);
REORDER(A,B,HI*WI,MH,HI*WI,FALSE); REVFFT2(A,B,HI*WI,MH,HI*WI);
FOR I←0 STEP 1 UNTIL HI-1 DO
FOR J←0 STEP 1 UNTIL WI-1 DO
A[I*WI+J]←(Q*SQRT(B[I*WI+J]↑2+A[I*WI+J]↑2) MAX 0) MIN PXMAX;
END;
BEGIN
INTEGER ARRAY PIC[0:PFLDIM(INFL)];
GETPFL(INFL,PIC[0]);
FOR I←0 STEP 1 UNTIL HI-1 DO
FOR J←0 STEP 1 UNTIL WI-1 DO
PUTEL(PIC[0],I,J,A[I*WI+J]);
PUTPFL(PIC[0],OUFL);
END;
END;
END;